<?php
declare (strict_types=1);


namespace app\common\controller;

use app\common\Str;

class Admin extends  Controller
{
    /**
     * 传输头部信息
     * @var array
     */
    protected  $headerInfo = [
        'title' => '',
        'btns' => [
            /*
            [
                'title' => '新增',// 标题
                'class' => '',// 类名
                'href' => '', // 链接地址
                'sort' => 0,// 排序
                'icon' => '' // 图标
            ]
            */
        ],
        'tips' => ''
    ];

    protected function initialize()
    {
        parent::initialize();// 调用父方法
        // 主标题
        $this->setTitle('我的后台管理系统');

        // 后台全局css - 每个页面都会加载的CSS
        $this->addCss([
            '/layui/css/layui',
            '/pear/component/pear/css/pear.css',
            '/pear/admin/css/loader.css',
            '/pear/admin/css/admin.css',
            'np.css',
            'admin/global',
            'admin/common'
        ]);

        // 后台全局js - 每个页面都会加载的JS
        $this->addJs('jquery.min.js', false);
        $this->addJs([
            '/layui/layui.js',
            '/pear/component/pear/pear.js',
            '/sortable/Sortable.min.js',
            'np.js',
            'admin/admin.js',
            'admin/common'
        ]);

    }

    /**
     * 重写fetch
     * @param string $template
     * @param array $data
     * @return mixed|string
     */
    protected function fetch(string $template = '', array $data = [])
    {
        $this->headerInfo['title'] = $this->headerInfo['title'] ?: Str::studly($this->request->action());
        if (!empty($this->headerInfo['btns'])) {
            // 对按钮按照sort字段进行倒序排序
            $btns = array_column($this->headerInfo['btns'], 'sort');
            array_multisort($btns, SORT_DESC, $this->headerInfo['btns']);
        }
        $this->assign('header_info', $this->headerInfo);
        return call_user_func_array(['parent', __FUNCTION__], func_get_args());
    }

    /**
     * 追加一个网页标题
     * @param string $title
     */
    protected function addTitle(string $title, bool $is_page_title = true)
    {
        if ($is_page_title) {
            $this->headerInfo['title'] = $title;
        }
        parent::addTitle($title);
    }

    /**
     * 设置页面标题
     * @param string $title
     */
    protected function setHeaderTitle(string $title)
    {
        $this->headerInfo['title'] = $title;
    }

    /**
     * 设置页面提示
     * @param string $title
     */
    protected function setHeaderTips(string $title)
    {
        $this->headerInfo['tips'] = $title;
    }

    protected function addHeaderBtn(array $item)
    {
        /**
         * [
        'title' => '新增',// 标题
        'class' => '',// 类名
        'href' => '', // 链接地址
        'sort' => 0,// 排序
        'icon' => '' // 图标
        ]*/

        $item['sort'] = isset($item['sort']) ? intval($item['sort']) :0;
        array_push($this->headerInfo['btns'], $item);
        return $this;
    }


}